18d9a494bbaef4666c1b2a6fb1b80553959d419c,src/freenet/node/RequestHandler.java,RequestHandler,run,#,68

Before Change


        	if(o instanceof KeyBlock) {
        		KeyBlock block = (KeyBlock) o;
        		Message df = createDataFound(block);
            	source.sendAsync(df, null, 0, null);        		
        		if(key instanceof NodeSSK) {
        			if(needsPubKey) {
        				DSAPublicKey key = ((NodeSSK)block.getKey()).getPubKey();

After Change


        
        short waitStatus = 0;
        
        while(true) {
            
        	waitStatus = rs.waitUntilStatusChange(waitStatus);
            if((waitStatus & RequestSender.WAIT_REJECTED_OVERLOAD) != 0) {
            	// Forward RejectedOverload
            	Message msg = DMT.createFNPRejectedOverload(uid, false);
            	source.sendAsync(msg, null, 0, null);
            }
            
            if((waitStatus & RequestSender.WAIT_TRANSFERRING_DATA) != 0) {
            	// Is a CHK.
                Message df = DMT.createFNPCHKDataFound(uid, rs.getHeaders());
                source.send(df, null);
                PartiallyReceivedBlock prb = rs.getPRB();
            	BlockTransmitter bt =
            	    new BlockTransmitter(node.usm, source, uid, prb, node.outputThrottle, this);
            	node.addTransferringRequestHandler(uid);
            	if(!bt.send()){
            		finalTransferFailed = true;
            	}
        	    return;
            }
            
            status = rs.getStatus();

            if(status == RequestSender.NOT_FINISHED) continue;
            
            switch(status) {
            	case RequestSender.NOT_FINISHED:
            	case RequestSender.DATA_NOT_FOUND: